import { SysDataSetFieldDataTypeEnum } from '@bitwit/tenantapi'
import { BwTableLinkPageTypeEnum } from './enum'

export interface BwFilterTableDataColumnsModel
  extends BwFilterTableFilterListModel {
  id?: string

  parentId?: Nullable<string>

  /** 标题 */
  title?: string
  /** 数据字段 */
  dataKey?: string
  /** 宽度 */
  width?: string
  /** 对齐方式 */
  align?: string
  /** 列固定 (必须指定宽度) */
  lock?: string
  /** 用户提示 */
  message?: string
  /** 显示排序 */
  sortable?: boolean
  /** 是否隐藏 */
  hidden?: boolean
  /** 是否可编辑 */
  editable?: boolean
  /** 合计列 */
  totalColumn?: boolean
  /** 链接列 */
  linkColumn?: boolean
  /** 链接列链接地址 */
  linkUrl?: string
  /** 链接列参数 */
  linkParams?: Record<string, any>[]
  /** 链接类型 内部页面或外链地址 */
  linkType?: string
  /** 访问页面所属应用 */
  linkApp?: string
  /** 页面类型 */
  linkPageType?: BwTableLinkPageTypeEnum
  /** 关联页面选择 */
  linkedPage?: string
  /** 跳转链接方式 */
  linkMode?: string
  /** 数据类型 */
  dataType?: string
  /** 合并类型 */
  mergeType?: string
  /** 合并依据字段集合 */
  mergeFields?: string
  /** 格式化类型 */
  formatType?: string
  /** 自定义渲染配置 */
  cellValueRender?: any
  /** 插槽内组件属性 */
  slotProps?: Record<string, any>[]

  /** 子数据 */
  children?: BwFilterTableDataColumnsModel[]
}

export interface BwFilterTableFilterListModel {
  /** 查询字段 */
  field?: string
  /** 自动触发查询 */
  autoTriggerQuery?: boolean
  /** 查询模式 与 或 */
  queryMode?: string
  /** 不参与查询 */
  notInQuery?: boolean
  /** 自动隐藏 */
  autoHide?: boolean
  /** 控件类型 */
  controlType?: string
  /** 控件属性 */
  controlProps?: Record<string, any>
  /** 查询字段dataType数据类型 */
  fieldDataType?: string
}

export interface BwFilterTableTreeListFieldsModel {
  label: string
  value: string | number
  dataType?: SysDataSetFieldDataTypeEnum
  disabled?: boolean
  children?: BwFilterTableTreeListFieldsModel[]
}

export interface TableColumnConfigSelectOptionsModel {
  label?: string
  value: string | number
  [key: string]: any
}
